<?php

namespace App\WechatHandlers;

use App\Models\WechatMessage;
use EasyWeChat\Kernel\Messages\Image;
use EasyWeChat\Kernel\Messages\News;
use EasyWeChat\Kernel\Contracts\EventHandlerInterface;

/**
 * Class TextMessageHandler
 * @package App\WechatHandlers
 * 文本消息处理器
 */
class TextMessageHandler implements EventHandlerInterface
{
    /**
     * @param null $payload
     * @return Image|News|string
     * 处理文本消息
     */
    public function handle($payload = null)
    {
        // 按优先级取出数据库中启用的关键字回复规则
        $keyData = WechatMessage::orderBy('sort', 'asc')
            ->isEnable()->responseTypeKey()->get();
        if (count($keyData) > 0) {
            foreach ($keyData as $v) {
                // 若匹配到该规则中的关键字
                if (strpos($v->key, $payload['Content']) !== false) {
                    // 给该规则使用次数+1
                    $v->increment('count');
                    // 再分别按照消息回复方式进行组装数据
                    return $v->getResponse();
                }
            }
        }
        // 收到消息回复
        $receiveData = WechatMessage::orderBy('sort', 'asc')
            ->isEnable()->responseTypeReceive()->first();
        if ($receiveData) {
            // 给该规则使用次数+1
            $receiveData->increment('count');
            // 再分别按照消息回复方式进行组装数据
            return $receiveData->getResponse();
        }
        return '';
    }
}